HttpClientEndpoint{ }
HttpClientEndpoint{ }
writeRequest{
final class OnConnect {
    public ChannelFuture onConnect(    final ChannelFuture cf){
      io.netty.channel.ChannelFuture.getChannel
  ConcurrentLinkedQueue<Object> messages=new ConcurrentLinkedQueue<Object>();
  messageList.put(id,messages);
  io.netty.handler.codec.http.HttpRequest.isChunked
    io.netty.handler.codec.http.HttpRequest.removeHeader
  final OnConnect onConnect=new OnConnect();
  ChannelFuture future=getChannelFuture();
  if (future != null) {
      io.netty.channel.ChannelFuture.getChannel
      io.netty.channel.ChannelFuture.addListener
      messages.offer(request);
      io.netty.channel.ChannelFuture.addListener
    messages.offer(request);
    final ChannelFuture cf=newChannelFuture();
    io.netty.channel.ChannelFuture.addListener
}
onConnect{
  io.netty.channel.ChannelFuture.getChannel
}
HandleEvent{ }
operationComplete{
  final ConcurrentLinkedQueue<Object> messages=messageList.get(id);
  if (messages != null) {
    Object message=messages.poll();
    if (message != null) {
      io.netty.channel.ChannelFuture.getChannel
        io.netty.channel.ChannelFuture.getChannel
        io.netty.handler.codec.http.HttpChunk.isLast
          workingChannels.remove(id);
          messageList.remove(id);
 else {
          io.netty.channel.ChannelFuture.addListener
 else {
        io.netty.channel.ChannelFuture.addListener
}
writeChunk{
  final ConcurrentLinkedQueue<Object> messages=messageList.get(messageId);
  if (messages == null) {
  if (messages.isEmpty()) {
    Channel channel=workingChannels.get(messageId);
    if (channel != null) {
      if (channel.isConnected()) {
        if (log.isDebugEnabled()) {
        channel.write(chunk).addListener(new HandleEvent(messageId));
 else {
 else {
    if (log.isDebugEnabled()) {
}
getChannelFuture{
      return null;
    final ChannelFuture cf=openChannels.remove();
    if (cf != null && cf.isSuccess() && !cf.getChannel().isConnected()) {
      return null;
}
newChannelFuture{
  if (log.isDebugEnabled()) {
  ClientBootstrap cb=configuration.getClientBootStrap();
  final ChannelFuture future=cb.connect(new InetSocketAddress(host,port));
  future.getChannel().setAttachment(this);
}
responseDone{
  if (!close) {
synchronized (openChannels) {
      openChannels.offer(future);
 else {
      future.addListener(ChannelFutureListener.CLOSE);
}
